<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/PmuRegistry.Data.Entities" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/PmuRegistry.Data.Entities" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="Company">
    <xs:sequence>
      <xs:element minOccurs="0" name="Acronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ID" type="xs:int" />
      <xs:element minOccurs="0" name="InterconnectionID" type="xs:int" />
      <xs:element minOccurs="0" name="InterconnectionName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="MapAcronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="NercRegionID" type="xs:int" />
      <xs:element minOccurs="0" name="NercRegionName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="TimeZone" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="URL" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Company" nillable="true" type="tns:Company" />
  <xs:complexType name="ArrayOfVendor">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Vendor" nillable="true" type="tns:Vendor" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfVendor" nillable="true" type="tns:ArrayOfVendor" />
  <xs:complexType name="Vendor">
    <xs:sequence>
      <xs:element minOccurs="0" name="Acronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ContactEmail" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ID" type="xs:int" />
      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="PhoneNumber" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="URL" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Vendor" nillable="true" type="tns:Vendor" />
  <xs:complexType name="ArrayOfVendorDevice">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="VendorDevice" nillable="true" type="tns:VendorDevice" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfVendorDevice" nillable="true" type="tns:ArrayOfVendorDevice" />
  <xs:complexType name="VendorDevice">
    <xs:sequence>
      <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ID" type="xs:int" />
      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="URL" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="VendorID" type="xs:int" />
      <xs:element minOccurs="0" name="VendorName" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="VendorDevice" nillable="true" type="tns:VendorDevice" />
  <xs:complexType name="ArrayOfNetworkModel">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="NetworkModel" nillable="true" type="tns:NetworkModel" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfNetworkModel" nillable="true" type="tns:ArrayOfNetworkModel" />
  <xs:complexType name="NetworkModel">
    <xs:sequence>
      <xs:element minOccurs="0" name="ExtraLineBusID" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ID" type="xs:int" />
      <xs:element minOccurs="0" name="LineBusName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="LocalLineBusID" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="NetworkElementUID" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="NominalKv" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="RegionalLineBusID" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="NetworkModel" nillable="true" type="tns:NetworkModel" />
  <xs:complexType name="ArrayOfUserComment">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="UserComment" nillable="true" type="tns:UserComment" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfUserComment" nillable="true" type="tns:ArrayOfUserComment" />
  <xs:complexType name="UserComment">
    <xs:sequence>
      <xs:element minOccurs="0" name="Comment" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CreatedOn" type="xs:dateTime" />
      <xs:element minOccurs="0" name="ID" type="xs:int" />
      <xs:element minOccurs="0" name="Subject" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="UserName" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="UserComment" nillable="true" type="tns:UserComment" />
  <xs:complexType name="ArrayOfDevice">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Device" nillable="true" type="tns:Device" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfDevice" nillable="true" type="tns:ArrayOfDevice" />
  <xs:complexType name="Device">
    <xs:sequence>
      <xs:element minOccurs="0" name="Acronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CompanyAcronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CompanyID" type="xs:int" />
      <xs:element minOccurs="0" name="CompanyMapAcronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CompanyName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ContactFullName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="CreatedOn" type="xs:dateTime" />
      <xs:element minOccurs="0" name="DeviceStatusName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="FundingSourceID" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="FundingSourceName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ID" type="xs:int" />
      <xs:element minOccurs="0" name="InServiceDate" nillable="true" type="xs:dateTime" />
      <xs:element minOccurs="0" name="InterconnectionID" type="xs:int" />
      <xs:element minOccurs="0" name="InterconnectionName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="IsConcentrator" type="xs:boolean" />
      <xs:element minOccurs="0" name="Latitude" nillable="true" type="xs:decimal" />
      <xs:element minOccurs="0" name="Longitude" nillable="true" type="xs:decimal" />
      <xs:element minOccurs="0" name="MeasuredLines" type="xs:int" />
      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ParentAcronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ParentID" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="ProtocolID" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="ProtocolName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="StatusDate" type="xs:dateTime" />
      <xs:element minOccurs="0" name="StatusID" type="xs:int" />
      <xs:element minOccurs="0" name="SubstationAcronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SubstationName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="TechnicalContactID" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="TimeZone" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="UpdatedOn" type="xs:dateTime" />
      <xs:element minOccurs="0" name="VendorAcronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="VendorDeviceID" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="VendorDeviceName" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Device" nillable="true" type="tns:Device" />
  <xs:simpleType name="DeviceType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Concentrator" />
      <xs:enumeration value="NonConcentrator" />
      <xs:enumeration value="All" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="DeviceType" nillable="true" type="tns:DeviceType" />
  <xs:complexType name="ArrayOfPhasor">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Phasor" nillable="true" type="tns:Phasor" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfPhasor" nillable="true" type="tns:ArrayOfPhasor" />
  <xs:complexType name="Phasor">
    <xs:sequence>
      <xs:element minOccurs="0" name="DestinationPhasorID" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="DestinationPhasorLabel" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="DeviceAcronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="DeviceID" type="xs:int" />
      <xs:element minOccurs="0" name="ID" type="xs:int" />
      <xs:element minOccurs="0" name="Label" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="NetworkElementUID" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="NetworkModelID" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="Phase" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="PhaseType" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="PhasorType" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SourceIndex" type="xs:int" />
      <xs:element minOccurs="0" name="Type" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Phasor" nillable="true" type="tns:Phasor" />
  <xs:complexType name="ArrayOfMeasurement">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Measurement" nillable="true" type="tns:Measurement" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfMeasurement" nillable="true" type="tns:ArrayOfMeasurement" />
  <xs:complexType name="Measurement">
    <xs:sequence>
      <xs:element minOccurs="0" name="Adder" type="xs:double" />
      <xs:element minOccurs="0" name="AlternateTag" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="DeviceAcronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="DeviceID" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="Enabled" type="xs:boolean" />
      <xs:element minOccurs="0" name="Multiplier" type="xs:double" />
      <xs:element minOccurs="0" name="PhasorLabel" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="PhasorSourceIndex" nillable="true" type="xs:int" />
      <xs:element minOccurs="0" name="PointTag" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SignalAcronym" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SignalID" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SignalName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SignalReference" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SignalSuffix" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="SignalTypeID" type="xs:int" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Measurement" nillable="true" type="tns:Measurement" />
  <xs:complexType name="Contact">
    <xs:sequence>
      <xs:element minOccurs="0" name="CompanyID" type="xs:int" />
      <xs:element minOccurs="0" name="CompanyName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ContactTypeID" type="xs:int" />
      <xs:element minOccurs="0" name="ContactTypeName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Email" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="FirstName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="ID" type="xs:int" />
      <xs:element minOccurs="0" name="LastName" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Phone" nillable="true" type="xs:string" />
      <xs:element minOccurs="0" name="Title" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="Contact" nillable="true" type="tns:Contact" />
  <xs:complexType name="ArrayOfContact">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Contact" nillable="true" type="tns:Contact" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfContact" nillable="true" type="tns:ArrayOfContact" />
  <xs:complexType name="ArrayOfCompany">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Company" nillable="true" type="tns:Company" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ArrayOfCompany" nillable="true" type="tns:ArrayOfCompany" />
</xs:schema>